%
% Color and reverse video support for dpost. A call made to setcolor with two
% arguments implies reverse video printing.
%

/rgb {setrgbcolor} bind def
/hsb {sethsbcolor} bind def

/colordict 50 dict dup begin
	/red			{ 1 0 0 } def
	/green			{ 0 1 0 } def
	/blue			{ 0 0 1 } def
	/cyan			{ 0 1 1 } def
	/magenta		{ 1 0 1 } def
	/yellow			{ 1 1 0 } def
	/white			{ 1 1 1 } def
	/black			{ 0 0 0 } def
end def

/setcolor {
	counttomark 1 eq {
		dup colordict exch known not {pop /black} if
		colordict exch get exec setrgbcolor
	} if
	counttomark 2 eq {
		/backcolor exch def
		/textcolor exch def
		colordict backcolor known not colordict textcolor known not or {
			/backcolor colordict /black get def
			/textcolor colordict /white get def
		} if
		/backcolor colordict backcolor get def
		/textcolor colordict textcolor get def
		/dY1 0 def
		/dY2 0 def
		textcolor exec setrgbcolor
	} if
} bind def

/drawrvbox {
	/x2 exch def
	/x1 exch def

	currentpoint dup
	/y1 exch def
	/y2 exch def pop

	dY1 0 eq dY2 0 eq and {
		currentfont /FontBBox get aload pop
		currentfont /FontMatrix get dtransform /dY2 exch def pop
		currentfont /FontMatrix get dtransform /dY1 exch def pop
	} if

	/y1 y1 dY1 add def
	/y2 y2 dY2 add def

	backcolor exec setrgbcolor
	newpath
	x1 y1 moveto
	x2 y1 lineto
	x2 y2 lineto
	x1 y2 lineto
	closepath fill
	textcolor exec setrgbcolor
} bind def
